package com.baseutil;

import com.bean.User;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ComparisonChain;
import org.junit.Test;

import java.util.Objects;


/**
 * Objects常用方法
 */
public class ObjectMethods {

    //jdk7已引入的方法,guava有相同的方法,但jdk已经有了
    @Test
    public void alreadyMethods(){
        //使用Objects.equals比较避免空指针,即 null.equals
        boolean result = Objects.equals(null, "a");
        Objects.equals(null,null);
        //Objects.hash:可以用对象的所有字段作散列
        System.out.println(Objects.hash("hou","征"));
    }
    //MoreObjects.toString 方便实现定制toString方法
    @Test
    public void guavaMethods(){
        User user = new User();
        user.setName("侯征");
        System.out.println(user);
        System.out.println(MoreObjects.toStringHelper(user)
                .add("name", user.getName())
                .add("age",user.getAge())
                .addValue("测试用户")
                .omitNullValues()  //删除对象中null属性不打印
                .toString());
    }

    /**
     * ComparisonChain 轻松实现比较,链式风格,避免jkd接口的繁琐
     */
    @Test
    public void comparisonChainTest(){
        //执行一种懒比较：它执行比较操作直至发现非零的结果，在那之后的比较输入将被忽略
        int result = ComparisonChain.start()
                .compare(1, 1)
                .compare("hou", "zheng")  //这一步出结果,下面会忽略
                .compare(50, 50)
                .result();
        System.out.println(result);
    }
}
